﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace mrp16062010.Uretec
{
    class TatilUret
    {
        List<AralikSaat> TatilZamanlari;
        AralikSaat CalismaSaatleri;
        Tarih AnaTarih;
        public List<IsParcasi> liste = new List<IsParcasi>();
        public TatilUret(List<AralikSaat> tatilZamanlari, AralikSaat calismaSaatleri, Tarih anaTarih)
        {
            TatilZamanlari = tatilZamanlari;
            CalismaSaatleri = calismaSaatleri;
            AnaTarih = anaTarih;
        }

        public List<IsParcasi> Olustur()
        {
            DateTime isBitis = new DateTime();
            for (DateTime date = AnaTarih.BaslangicTarihi; date <= AnaTarih.BitisTarihi; date = date.AddDays(1))
            {
                if (isBitis != DateTime.MinValue)
                {
                    DateTime isBaslangic = date.ChangeTime(CalismaSaatleri.Min.Saat, CalismaSaatleri.Min.Dakika, 0, 0);
                    Tarih tarih = new Tarih(isBitis, isBaslangic);
                    IsParcasi tatil = new IsParcasi(tarih.BaslangicTarihi, tarih.BitisTarihi);
                    tatil.TatilMi = true;
                    liste.Add(tatil);
                }
                foreach (AralikSaat saatAralik in TatilZamanlari)
                {
                    Tarih tarih = new Tarih(date.ChangeTime(saatAralik.Min.Saat, saatAralik.Min.Dakika, 0, 0), date.ChangeTime(saatAralik.Max.Saat, saatAralik.Max.Dakika, 0, 0));
                    IsParcasi tatil = new IsParcasi(tarih.BaslangicTarihi, tarih.BitisTarihi);
                    tatil.TatilMi = true;
                    liste.Add(tatil);
                }
                if (date.DayOfWeek==DayOfWeek.Sunday||date.DayOfWeek==DayOfWeek.Saturday)
                {
                     DateTime isBaslangicTatil = date.ChangeTime(CalismaSaatleri.Min.Saat, CalismaSaatleri.Min.Dakika, 0, 0);
                     DateTime isBitisTatil = date.ChangeTime(CalismaSaatleri.Max.Saat, CalismaSaatleri.Max.Dakika, 0, 0);
                     Tarih tarih = new Tarih(isBaslangicTatil, isBitisTatil);
                    IsParcasi tatil = new IsParcasi(tarih.BaslangicTarihi, tarih.BitisTarihi);
                    tatil.TatilMi = true;
                    liste.Add(tatil);
                }
                isBitis = date.ChangeTime(CalismaSaatleri.Max.Saat, CalismaSaatleri.Max.Dakika, 0, 0);
            }
            return liste;
        }
    }
}
